package demo2;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 何华树
 * Date: 2024-07-29
 * Time: 20:09
 */

class Student{
    private String name;
    private int age;
    private String stuNum;

    public static String classNum = "1班";//静态成员变量
    //静态成员变量 属于 类变量，不属于对象（不依赖对象）
    public static int count = 10;

    public Student(String name,int age, String stuNum) {
        this.age = age;
        this.name = name;
        this.stuNum = stuNum;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getStuNum() {
        return stuNum;
    }

    public void setStuNum(String stuNum) {
        this.stuNum = stuNum;
    }

    public void sleep() {
        System.out.println(this.name+" 在睡觉休息。");
    }

    public void doclass() {
        System.out.println("姓名："+this.name+" 年龄："+this.age+" 学号："+this.stuNum);
    }

//    public static String getClassNum() {
//        this.name = "fafa";
//        doclass();
//        return classNum;
//    }   错误写法。

    public static String getClassNum() {
        //如何在 静态成员方法 里面调用 非静态成员方法
//        Student student = new Student("zhangsan",12,"1234");
//        student.doclass();
        return classNum;
    }
    public void show() {
        System.out.println("成员信息。。。");
        System.out.println(getClassNum());//在类内，可以直接使用 静态成员方法
    }
}
public class Test {


    public static void main5(String[] args) {
        Student student = new Student("zhangsan",12,"1234");
        student.show();
    }

    public static void main4(String[] args) {
        System.out.println(Student.getClassNum());
    }

    public static void main3(String[] args) {
        //结论：静态成员变量，既可以通过对象的引用去访问，也可以通过类名去访问，但是，更加建议使用类名去访问
        Student student1 = new Student("zhangsan",12,"1234");
        student1.count++;

        Student student2 = new Student("zhangsan",12,"1234");
        student2.count++;

        Student student3 = new Student("zhangsan",12,"1234");
        student3.count--;

        Student student4 = new Student("zhangsan",12,"1234");
        Student.count++;

        System.out.println(Student.count);//12
    }
    public static void main2(String[] args) {
//        Student student1 = null;
//        System.out.println(student1.num);//num是非静态成员变量，依赖对象，所以会报空指针异常。

        Student student2 = null;
        System.out.println(student2.classNum);//classNum 是静态成员变量，不依赖对象，
        // 所以就算对象的引用是null，也不影响对 classNum 的访问。


    }

    public static void main1(String[] args) {
        Student student1 = new Student("zhangsan",12,"1234");

//        student1.doclass();
        System.out.println(student1.classNum);
        //通过 对象的引用 访问 静态成员变量
        System.out.println(Student.classNum);
        //通过 类名 访问 静态成员变量

        //更推荐使用第二种方法访问静态成员变量，因为静态成员变量 不依赖对象，它属于 类。

        Student student2 = new Student("lisi",13,"12345");
//        System.out.println(student2);
//        student2.doclass();

    }
}
